import javax.swing.plaf.synth.SynthLookAndFeel;
import java.io.File;
import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Scanner;

/**
 * @author spf
 * @date 2024/3/24
 * @time 21:06
 */
//public class Main {
//    public static void main(String[] args) {
////        System.out.println("Hello world!");
//
////        File file = new File("d:/电影/华语/大陆");
////        File file1 = new File("d:/电影");
////        file.mkdir();
////        file.mkdirs();
////        file.delete();
////        file1.mkdir();
//
//
//    }

//    public static void main(String[] args) {
//        Scanner scanner = new Scanner(System.in);
//        int n = scanner.nextInt();
//        int[] a = new int[n];
//        for (int i = 0; i < n; i++) {
//            a[i] = scanner.nextInt();
//        }
//
//        long MOD = 1000000007;
//        long[] dp = new long[n+1];
//        dp[0] = 1;
//
//        for (int i = 0; i < n; i++) {
//            dp[i+1] = (dp[i] * 2) % MOD;
//        }
//
//        long ans = 0;
//        for (int i = 0; i < n; i++) {
//            ans = (ans + (a[i] * dp[n-1]) % MOD) % MOD;
//        }
//
//        System.out.println(ans);
//    }
//    public static void main(String[] args) {
//        Scanner scanner = new Scanner(System.in);
//        int n = scanner.nextInt();
//        Map<String, Integer> firstVisitMap = new LinkedHashMap<>();
//
//        for (int i = 0; i < n; i++) {
//            String userId = scanner.nextLine();
//            if (!firstVisitMap.containsKey(userId)) {
////            System.out.println(userId);
//                firstVisitMap.put(userId, 1);
//            } else {
//                firstVisitMap.put(userId, firstVisitMap.get(userId) + 1);
//            }
//        }
//
//        for (Map.Entry<String, Integer> entry : firstVisitMap.entrySet()) {
//            System.out.println(entry.getKey());
//        }
//    }

//}

import java.util.*;
//public class Main{
//    public static void main(String[] args){
//        Scanner sc = new Scanner(System.in);
//        int T = sc.nextInt();
//        // List<String> results = new ArrayList<>();
//
//        for(int i=0;i<T;i++){
//            int n= sc.nextInt();
//            int[] rankAdjust = new int[n+1];
//            boolean isValid = true;
//
//            for(int j=0;j<n;j++){
//                int songRank = sc.nextInt();
//                int adjusts = sc.nextInt();
//
//                if (songRank < 1 || songRank > n) {
//                    isValid = false;
//                    break;
//                }
//
//                if(adjusts ==1){
//                    rankAdjust[songRank]++;
//                }else if(adjusts == -1){
//                    rankAdjust[songRank]--;
//                }else{
//
//                }
//
//                if(rankAdjust[songRank] >1 || rankAdjust[songRank] < -1){
//                    isValid = false;
//                    break;
//                }
//            }
//
//            System.out.println(isValid?"YES":"NO");
//
//
//        }
//        sc.close();
//    }
//}

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
//public class Main {
//    public static void main(String[] args) {
//        Scanner sc = new Scanner(System.in);
//
//        int q = sc.nextInt();
//        for (int i = 0; i < q; i++) {
//            int n = sc.nextInt();
//            int m = sc.nextInt();
//            int k = sc.nextInt();
//
//            long result = maxGain(n, m, k);
//            System.out.println(result);
//        }
//
//        sc.close();
//    }
//
//    private static long maxGain(int n, int m, int k) {
//        // TODO
//        if (n == 1 || m == 1) {
//            return (long) Math.min(k + 1, n * m) * (n - 1) * m / 2;
//        } else {
//            long maxEdge = (n - 1) * m + (m - 1);
//            long secondMaxEdge = (n - 2) * m + (m - 1);
//            long thirdMaxEdge = (n - 1) * m + (m - 2);
//
//            long maxVisit = (k + 1) / 2;
//            long totalVal = maxEdge * maxVisit;
//
//            long remainVisit = (k % 2 == 0) ? k / 2 : (k / 2 - 1);
//            totalVal += secondMaxEdge * remainVisit;
//
//            if (k % 2 != 0) {
//                totalVal += thirdMaxEdge;
//            }
//
//            return totalVal;
//        }
//    }
//}

//public class Main {
//    public static void main(String[] args) {
//        Scanner sc = new Scanner(System.in);
//        int n = sc.nextInt();
//        int[] a = new int[n];
//
//        for (int i = 0; i < n; i++) {
//            a[i] = sc.nextInt();
//        }
//
//        int result = minScore(a, n);
//        System.out.println(result);
//
//        sc.close();
//    }
//
//    private static int minScore(int[] a, int n) {
//        int sumTotal = 0;
//        for (int power :a) {
//            sumTotal += power;
//        }
//
//        int halfSum = sumTotal / 2;
//        boolean[] dp = new boolean[halfSum + 1];
//        dp[0] = true;
//        for(int power:a){
//            for(int i=halfSum;i>=power;i--){
//                dp[i] = dp[i] || dp[i-power];
//            }
//        }
//
//        for (int i = halfSum; i >=0 ; i--) {
//            if (dp[i]){
//                return Math.abs(sumTotal - 2 * i);
//            }
//        }
//
//        return sumTotal;
//    }
//}

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();
        int[] a = new int[m];
        for (int i = 0; i < m; i++) {
            a[i] = sc.nextInt();
        }

        int[] extendedA = new int[m * 2];
        for (int i = 0; i < m; i++) {
            extendedA[i] = a[i];
            extendedA[i + m] = a[i] + n;
        }
        Arrays.sort(extendedA);

        int median = extendedA[m-1];

        int result = median %n;
        if (result == 0){
            result = n;
        }


        System.out.println(result);
        sc.close();
    }
}

//public class Main {
//    public static void main(String[] args) {
//        Scanner sc = new Scanner(System.in);
//        int T = sc.nextInt();
//        List<String> result = new ArrayList<>();
//
//        while(T-- > 0){
//            int n = sc.nextInt();
//            int x = sc.nextInt();
//            List<Set<String>> folder = new ArrayList<>();
//
//            for (int i = 0; i < n; i++) {
//                int mi = sc.nextInt();
//                Set<String> set = new HashSet<>();
//                for (int j = 0; j < mi; j++) {
//                    set.add(sc.next());
//                }
//                folder.add(set);
//            }
//
//            boolean found = false;
//            int folderA = -1,folderB = -1;
//
//            for (int i = 0; i < n; i++) {
//                for (int j = i+1; j < n; j++){
//                    Set<String> combinedSet = new HashSet<>(folder.get(i));
//                    combinedSet.addAll(folder.get(j));
//                    int size = combinedSet.size();
//                    if(size == x){
//                        found = true;
//                        folderA = i+1;
//                        folderB = j+1;
//                        break;
//                    }
//                }
//                if (found){
//                    break;
//                }
//            }
//            if (found){
//                result.add("YES");
//                result.add(folderA + " " + folderB);
//            } else {
//                result.add("NO");
//            }
//        }
//
//        for (String res : result) {
//            System.out.println(res);
//        }
//
//        sc.close();
//    }
//}